//引入解码工具
const {
  jwtDecode
} = require('../utils/jwt')
//引入数据库集合对象
const adminModel = require("../db/model/adminModel")
//
//token校验中间件
module.exports = async (req, res, next) => {
  const {
    token
  } = req.headers
  //对token进行解码(返回一个对象,code代表解码的情况)
  const jewResult = jwtDecode(token, '666')
  //如果解码失败
  if (jewResult.code === 0) {
    return res.send({
      code: 20000,
      msg: '服务器权限校验解码失败',
      data: null
    })
  }
  //解码成功,返回的对象中有一个adminName,我们继续去数据库中查询status是否为1
  try {
    const findResult = await adminModel.findOne({ //返回值是布尔值,如果返回true就是已经注册过了
      adminName: jewResult.adminName
    })
    if (findResult.status === 0) {
      return res.send({
        code: 20002,
        msg: '服务端权限校验失败,数据库保存的status异常',
        data: null
      })
    }
    //权限校验通过,继续向下运行
    next();
  } catch (e) {
    console.log("权限控制中:查询status状态出现异常" + e.message);
    res.send({
      code: 20001,
      msg: "权限控制中:查询status状态出现异常" + e.message,
      data: null
    })
  }
}